//package com.patchmanage.back.utils;
//
//import java.io.File;
//import java.io.FileInputStream;
//import java.io.FileNotFoundException;
//import java.io.IOException;
//import java.io.InputStream;
//import java.math.BigDecimal;
//import java.net.URL;
//import java.util.Date;
//import java.util.Random;
//
//import com.patchmanage.back.dto.OssMetadataDto;
//import com.patchmanage.back.exception.SystemException;
//import com.patchmanage.back.result.CodeMsg;
//import org.apache.commons.logging.Log;
//import org.apache.commons.logging.LogFactory;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.beans.factory.annotation.Value;
//import org.springframework.stereotype.Component;
//import org.springframework.util.StringUtils;
//import org.springframework.web.multipart.MultipartFile;
//
//import com.aliyun.oss.OSSClient;
//import com.aliyun.oss.model.ObjectMetadata;
//import com.aliyun.oss.model.SimplifiedObjectMeta;
//
///**
// *@describe： 阿里云 OSS文件类 
// *@author：HuiZhao  
// *@createTime：2019年4月23日 下午1:40:12     
// */
//@Component
//public class OSSUtils {
//
//	Log log = LogFactory.getLog(OSSUtils.class);
//
//	@Value("${oss.endpoint}")
//	private String endpoint; // 连接区域地址
//	@Value("${oss.accessKeySecret}")
//	private String accessKeySecret; // 连接秘钥
//	@Value("${oss.bucketName}")
//	private String bucketName; // 需要存储的bucketName
//	@Value("${oss.picLocation}")
//	private String picLocation; // 图片保存路径
//
//	// 文件存储目录
//	private String filedir = "";
//
//
//
//	@Autowired
//	private OSSConstantProperties config;
//
//	private OSSClient ossClient;
//
//
//	/**
//	 * 销毁
//	 */
//	public void destory() {
//		ossClient.shutdown();
//	}
//
//	/**
//	 * 上传图片
//	 *
//	 * @param url
//	 */
//	public void uploadImg2Oss(String url) {
//		File fileOnServer = new File(url);
//		FileInputStream fin;
//		try {
//			fin = new FileInputStream(fileOnServer);
//			String[] split = url.split("/");
//			this.uploadFile2OSS(fin, split[split.length - 1]);
//		} catch (FileNotFoundException e) {
//			throw new RuntimeException("图片上传失败");
//		}
//	}
//
//	public String uploadImg2Oss(MultipartFile file) {
//		if (file.getSize() > 1024 * 1024 * 10) {
//			throw new RuntimeException("上传图片大小不能超过10M！");
//		}
//		String originalFilename = file.getOriginalFilename();
//		String substring = originalFilename.substring(originalFilename.lastIndexOf(".")).toLowerCase();
//		Random random = new Random();
//		String name = random.nextInt(10000) + System.currentTimeMillis() + substring;
//		try {
//			InputStream inputStream = file.getInputStream();
//			return this.uploadFile2OSS(inputStream, name);
//		} catch (Exception e) {
//			throw new RuntimeException("图片上传失败");
//		}
//	}
//
//	/**
//	 * 获得图片路径
//	 *
//	 * @param fileUrl
//	 * @return
//	 */
//	public String getImgUrl(String fileUrl) {
//		if (!StringUtils.isEmpty(fileUrl)) {
//			String[] split = fileUrl.split("/");
//			return this.getUrl(this.filedir + split[split.length - 1]);
//		}
//		return null;
//	}
//
//	/**
//	 * 上传到OSS服务器 如果同名文件会覆盖服务器上的
//	 *
//	 * @param instream 文件流
//	 * @param fileName 文件名称 包括后缀名
//	 * @return 出错返回"" ,唯一MD5数字签名
//	 */
//	public String uploadFile2OSS(InputStream instream, String fileName) {
//		String url = "";
//		try {
//			// 创建上传Object的Metadata
//			ObjectMetadata objectMetadata = new ObjectMetadata();
//			objectMetadata.setContentLength(instream.available());
//			objectMetadata.setCacheControl("no-cache");
//			objectMetadata.setHeader("Pragma", "no-cache");
//			objectMetadata.setContentType(getcontentType(fileName.substring(fileName.lastIndexOf("."))));
//			objectMetadata.setContentDisposition("inline;filename=" + fileName);
//			// 上传文件
//			ossClient = new OSSClient(config.getEndpoint(), config.getAccessKeyId(), config.getAccessKeySecret());
//			ossClient.putObject(bucketName, filedir + fileName, instream, objectMetadata);
//
//			url = config.getEndpoint().replaceFirst("http://", "http://" + config.getBucketName() + ".") + "/" + filedir
//					+ fileName; // 上传成功再返回的文件路径
//
//
//		} catch (IOException e) {
//			log.error(e.getMessage(), e);
//		} finally {
//			ossClient.shutdown();
//			try {
//				if (instream != null) {
//					instream.close();
//				}
//			} catch (IOException e) {
//				e.printStackTrace();
//			}
//		}
//		return url;
//	}
//
//	/**
//	 * 上传到OSS服务器 如果同名文件会覆盖服务器上的
//	 *
//	 * @return 出错返回"" ,唯一MD5数字签名
//	 */
//	public String copyFile(String sourceFile) {
//
//		String contentType = sourceFile.substring(sourceFile.lastIndexOf("."));
//		String targetFile = UUIDUtil.uuid() + contentType;
//		String url = "";
//			// 创建上传Object的Metadata
//		ossClient = new OSSClient(config.getEndpoint(), config.getAccessKeyId(), config.getAccessKeySecret());
//		ossClient.copyObject(bucketName, sourceFile, bucketName, targetFile);
//
//		url = config.getEndpoint().replaceFirst("http://", "http://" + config.getBucketName() + ".") + "/" + filedir
//				+ targetFile; // 上传成功再返回的文件路径
//
//		return url;
//	}
//
//	public OssMetadataDto getMetadata(String objectName) {
//		try{
//			ossClient = new OSSClient(config.getEndpoint(), config.getAccessKeyId(), config.getAccessKeySecret());
//			SimplifiedObjectMeta objectMeta = ossClient.getSimplifiedObjectMeta(bucketName, objectName);
//
//			OssMetadataDto ossMetadataDto = new OssMetadataDto(
//					objectMeta.getETag(),
//					BigDecimal.valueOf(Double.valueOf(objectMeta.getSize())/1024/1024).setScale(3, BigDecimal.ROUND_HALF_UP).doubleValue(),
//					objectMeta.getLastModified());
//			return ossMetadataDto;
//		}catch (Exception e) {
//			log.error(e.getMessage(), e);
//			throw new SystemException(CodeMsg.SERVER_ERROR);
//		}finally {
//			ossClient.shutdown();
//		}
//	}
//
//	/**
//	 * Description: 判断OSS服务文件上传时文件的contentType
//	 *
//	 * @param FilenameExtension 文件后缀
//	 * @return String
//	 */
//	public static String getcontentType(String FilenameExtension) {
//		if (FilenameExtension.equalsIgnoreCase(".bmp")) {
//			return "image/bmp";
//		}
//		if (FilenameExtension.equalsIgnoreCase(".gif")) {
//			return "image/gif";
//		}
//		if (FilenameExtension.equalsIgnoreCase(".jpeg") || FilenameExtension.equalsIgnoreCase(".jpg")
//				|| FilenameExtension.equalsIgnoreCase(".png")) {
//			return "image/jpeg";
//		}
//		if (FilenameExtension.equalsIgnoreCase(".html")) {
//			return "text/html";
//		}
//		if (FilenameExtension.equalsIgnoreCase(".txt")) {
//			return "text/plain";
//		}
//		if (FilenameExtension.equalsIgnoreCase(".vsd")) {
//			return "application/vnd.visio";
//		}
//		if (FilenameExtension.equalsIgnoreCase(".pptx") || FilenameExtension.equalsIgnoreCase(".ppt")) {
//			return "application/vnd.ms-powerpoint";
//		}
//		if (FilenameExtension.equalsIgnoreCase(".docx") || FilenameExtension.equalsIgnoreCase(".doc")) {
//			return "application/msword";
//		}
//		if (FilenameExtension.equalsIgnoreCase(".xml")) {
//			return "text/xml";
//		}
//		return "image/jpeg";
//	}
//
//	/**
//	 * 获得url链接
//	 *
//	 * @param key
//	 * @return
//	 */
//	public String getUrl(String key) {
//		// 设置URL过期时间为10年 3600l* 1000*24*365*10
//		Date expiration = new Date(new Date().getTime() + 3600l * 1000 * 24 * 365 * 10);
//		// 生成URL
//		URL url = ossClient.generatePresignedUrl(bucketName, key, expiration);
//		if (url != null) {
//			return url.toString();
//		}
//		return null;
//	}
//
//	public static void main(String[] args) {
//
//	}
//}